9.3.2.1. Dizi Üzerinde Çevrimsel Kuyruk Uygulaması

Verilen kaba-kodlar uyarınca dizi tabanlı çevrimsel kuyruk yapısı oluşturulması için, herşeyden önce kuyruğun veri yapısı açık olarak tanımlanmalıdır. Kodlama işlemi, bu veri yapısına bağlı olarak gerçekleştirilir. Programda tüm verileri kapsayan bir topluluk bildirimi yapılarak KUYRUK adlı veri türü oluşturulmuş ve bu türün yapısı üzerinde çalışacak fonksiyonlar verilmiştir.

/* Global bildirimler */
#define N 500

typedef struct kuyrukyapisi {
     unsigned int bas;
     unsigned int son;
     unsigned int var;
     int D[N];
} KUYRUK;

/* Başlangıç durumuna getirme fonksiyonu */
void baslangic(KUYRUK *K)
{
    (*K.var)=0;
    (*K.bas)=0;
    (*K.son)=0;
}

/* Kuyruğa ekleme/koyma fonksiyonu */
int K_ekle(int veri, KUYRUK *K)
{
    if((*K.var) > (N-1)) {
/* dolu mu sınaması */
       puts("Kuyruk Dolu");
   return EKES;
}
   (*K.son)=((*K.son)+1)%N;
/* ekleme sayacı çevrimsel ayarlanıyor */
   (*K.D[(*K.son)])=veri;
   (*K.var)++;
return EBAS;
}

/* Kuyruktan çıkartma fonksiyonu */
int K_cikart(KUYRUK *K, int *cikarilan)
{
   int gcc;

   if(K.var<=0) { /* boş mu sınaması */
       puts("Kuyruk Boş");
  return EKES;
}
  *cikarilan= (*K.D[K.ilk]);
  (*K.ilk)=((*K.ilk)+1)%N;
/* alma sayacı çevrimsel ayarlanıyor */
  (*K.var)--;
  return EBAS;
}